Anfragen an Ontologien in relationalen Datenbanken
نویسنده
چکیده
Ontologien und Taxonomien sind kontrollierte, strukturierte Vokabulare für eine Domäne um Objekte darin zu beschreiben. Ontologien in der Biologie, wie beispielsweise die NCBI Taxonomie, die Klassifizierung von Lebewesen, oder die Gene Ontology sind als Bäume bzw. gerichtete, azyklische Graphen aufgebaut. Taxonomien werden häufig zusammen mit den annotierten Objekten in relationalen Datenbanken gespeichert. Durch die Struktur der Ontologien bzw. Taxonomien können Beziehungen zwischen Objekten angefragt und erkannt werden. Diese Anfragen innerhalb eines relationalen Datenbanksystems auszuführen setzt entweder die Verwendung von rekursiven Funktionen oder die Indizierung des Graphen voraus. Ich stelle 2 verschiedene Indizierungsmöglichkeiten vor, die transitive Hülle und Preund Postorder Ranking, und vergleiche die Anfragezeiten für beide Indexstrukturen mit Anfragezeiten für die rekursive Funktion. 1 Einleitung und Motivation Ontologien und Taxonomien spielen eine wichtige Rolle in der Biologie und Medizin. Die vielleicht älteste Taxonomie in der Biologie ist die Klassifizierung von Flora und Fauna. In ihr spiegelt sich die evolutionäre Abstammung von verschiedenen Organismen wieder. Die NCBI Taxonomy ist als Baum mit gerichteten Kanten aufgebaut [1]. In den letzten Jahren wurden weitere Ontologien entwickelt um biologische Objekte und Vorgänge zu beschreiben, beispielsweise die Gene Ontology [2]. Sie stellt ein strukturiertes Vokabular zur Verfügung, um Proteine in ihren Funktionen und Wirkorten zu beschreiben. Die Gene Ontology (GO) ist ein gerichteter, azyklischer Graph (directed acyclic graph, DAG) mit einem Wurzelknoten. Betrachtet man folgende Fragestellung ’Zeige mir alle biologischen Proben, die laut NCBI Taxonomy Eukaryoten sind?’, so erwartet ein Biologe nicht nur die Proben, die direkt mit dem Konzept ’Eukaryot’ beschrieben sind, sondern auch Proben von Menschen, Mäusen, Pantoffeltierchen und weiteren Eukaryoten. Diese Frage in einer relationalen Datenbank zu beantworten ist mit Standard-SQL nicht möglich, da nicht nur nach Kindern eines Knotens gesucht wird, sondern auch nach deren Nachfahren. Da diese beliebig weit vom Startknoten entfernt sein können, ist es nur möglich die Frage mit Hilfe einer rekursiven Funktion zu beantworten. Ein großer Nachteil der rekursiven Funktion ist die Abhängigkeit der Antwortzeit von der Anzahl der traversierten Knoten. Je nach Größe des Ergebnissets kann dies einige Zeit dauern. Eine Alternative dazu ist einen vorberechneten Index in nahezu konstanter Zeit anzufragen. Indizes benötigen allerdings Speicherplatz und Zeit für die Vorberechnung, was viele Indexstrukturen für große Ontologien ungeeignet macht. In dieser Arbeit präsentiere ich eine Indexstruktur für Bäume und gerichtete azyklische Graphen, die Anfragen in konstanter Zeit beantwortet, aber wesentlich weniger Speicherplatz für baumähnliche Graphen benötigt als die transitive Hülle. 2 Speichern und Anfragen von Ontologien Datenmodell. Wir betrachten Ontologien die die Form von gerichteten Bäumen oder azyklischen Graphen haben. Ein Pfad in einer solchen Struktur ist eine Folge von Knoten, die durch gerichtete Kanten verbunden sind, wobei die Länge des Pfades die Anzahl an Knoten in dem Pfad ist. In einem Baum kann jeder Knoten auf genau einem Pfad von der Wurzel aus erreicht werden. In DAGs können Knoten mehr als einen Elternknoten haben, daher kann mehr als ein Pfad zwischen zwei Knoten existieren. In einem Baum bzw. gerichteten Graphen ohne Zyklen (DAG) sind alle Knoten w Nachfahren von v wenn ein Pfad zwischen v und w existiert. Alle Knoten w, die von v aus zu erreichen sind, bilden die Menge an Nachfahren. Graphen werden häufig als Sammlung von Knoten und Kanten gespeichert. Die Tabelle node enthält als eindeutige Kennung das Attribut node name, in der Tabelle EDGE werden die gerichteten Kanten des Graphen in Form von Paaren von Knoten gespeichert, from node und to node. Rekursive Datenbankfunktion. Alle Nachfahren eines gegebenen Knotens v können durch eine Tiefensuche über einem Baum oder DAG gefunden werden. Algorithmus 1 sucht zuerst alle Kinder des Startknotens v und für jedes der Kinder ruft sich die Funktion mit dem Kindknoten als neuen Startknoten selbst wieder auf. Können keine weiteren Kinder in dem Subgraphen mehr gefunden werden, gibt die Funktion alle traversierten Knoten zurück. Der Aufruf der Funktion erfolgt mit SELECT * FROM successorSet(v);. Algorithmus 1 Rekursiver Algorithmus um alle Nachfahren von v zu erhalten. FUNCTION successorSet(v) RETURNS nachfahren FOR EACH kind IN SELECT to node FROM EDGE WHERE from node = v DO FOR EACH enkel IN SELECT nachfahre FROM successorSet(kind) DO nachfahren := nachfahren + enkel; nachfahren := nachfahren + kind; RETURN nachfahren; 3 Indizierung von Baumund DAG-Strukturen In diesem Abschnitt erkläre ich Möglichkeiten die Beziehungen zwischen Knoten in Bäumen und DAGs vorzuberechnen. Die erste Möglichkeit ist die Berechnung der transitiven Hülle, während die zweite die Indizierung der Struktur mit Preund Postorder Ranks ist. 3.1 Berechnung der transitiven Hülle Die transitive Hülle eines Graphen ist eine Menge von Knotenpaaren. Jedes Paar (v, w) wird in die transitive Hülle aufgenommen, wenn entweder eine Kante oder ein Pfad zwischen den Knoten v und w existiert. In der Vergangenheit wurden verschiedene Algorithmen entwickelt um die transitive Hülle in relationalen Datenbanksystemen zu berechnen. Wir fanden heraus, dass der so genannte ’Logarithmic algorithm’ [3] für Bäume und DAGs die geringste Zeit benötigt. Dieser Algorithmus fügt zuerst alle Tupel der ursprünglichen Tabelle EDGE in die Tabelle für die transitive Hülle, TC mit der Distanz 1 zwischen zwei Knoten ein. In Schritt 2 werden alle Tupel mit maximaler Distanz mit TC gejoint. Die Bedingung für diese Operation ist, dass der Nachfolger der ersten Relation, TC1, gleich dem Vorgänger der zweiten Relation, TC2 sein muß. In der Tabelle TC wird TC1.VORG, TC2.NACHF, sowie min(TC1.DIST+TC2.DIST) eingefügt. Schritt 2 wird so lange wiederholt, bis keine weiteren Tupel mehr in TC eingefügt werden können. Die transitive Hülle hat einen theoretischen Speicherplatzverbrauch von O(|V |), doch der in Kapitel 4 gemessene Bedarf ist wesentlich geringer. Alle Nachfahren eines Knotens erhält man durch folgenden Ausdruck: SELECT nachfahre FROM TC WHERE vorgaenger = v; 3.2 Preund Postorder Ranking Modell Das Preund Postorder Ranking Modell für Bäume ist gut untersucht. Verschiedene Gruppen haben dieses Modell vorgeschlagen, um XML Dokumente in relationalen Datenbanken zu indizieren [4]. Algorithmus 2 zeigt die Funktion, um Knoten in Bäumen als auch in DAGs Preund Postorder Ranks zuzuordnen. Die Knoten werden während einer Tiefensuche, angefangen am Wurzelknoten, markiert. Den Preorder Rank bekommt ein Knoten sobald er während der Tiefensuche gefunden wurde. Der Postorder Rank wird einem Knoten erst zugeteilt, wenn alle Nachfolger einen Postorder Rank haben, aber noch bevor ein Elternknoten in dem Pfad einen solchen besitzt. Algorithmus 2 Preund Postorder Rank-Zurordnung, angefangen beim Wurzelknoten, r. var pr:=0; var post:=0; FUNCTION prePostOrder(r) RETURNS void FOR EACH kind IN SELECT to node FROM EDGE WHERE from node = r DO pr:=pr+1; pre:=pr; prePostOrder(kind); post:=post+1; s:= pr-pre; INSERT kind, pre, post, s INTO prePostOrder; Wie in Abbildung 1(b) dargestellt, werden die Preund Postorder Ranks zusammen mit der eindeutigen Kennung des Knotens und der Anzahl an Kindern, s, in einer separaten Tabelle gespeichert. Für Bäume ist der Platzbedarf gleich der Anzahl an Knoten, in DAGs können jedem Knoten mehrere Ranks zugeordnet werden, abhängig von der Zahl an Wegen, auf denen dieser Knoten von der Wurzel aus erreichbar ist.
منابع مشابه
Transformation von SQL in XQuery-Anfragen innerhalb föderierter Informationssysteme
In föderierten Informationssystemen steht man vor dem Problem, Daten und Informationen, die in verschiedenen Formaten und Systemen gespeichert sind, auswerten zu müssen. Die Daten können dabei in relationalen, objektrelationalen oder auch XML-Datenbanken vorliegen. Dazu werden AnfrageTransformationen benötigt, aber auch die Transformation von Daten und Ergebnissen in andere Formate ist erforder...
متن کاملEine effiziente Indexstruktur für dynamische hierarchische Daten
Bis heute fällt es relationalen Datenbanksystemen schwer, große Mengen dynamischer hierarchischer Daten effizient zu verwalten, obwohl dies eine ständig wiederkehrende Anforderung in fast allen betrieblichen Informationssystemen ist. In dieser Arbeit stellen wir eine Datenstruktur vor, die beliebig geformte Hierarchien derart indexiert, dass strukturbezogene Anfragen beschleunigt werden, währen...
متن کاملKeyX: ein selektiver schlüsselorientierter Index für das Index Selection Problem in XDBMS
Zusammenfassung In relationalen Datenbank-Management-Systemem (RDBMS) werden Indizes verwendet, um spezifische und häufig wiederkehrende Anfragen zu beschleunigen. Die Auswahl von passenden Indizes ist ein wichtiger Prozess beim Anlegen und Optimieren der Datenbank, der meist von einem Administrator oder einem Index-Auswahl-Tool durchgeführt wird, welches eine Menge von passenden Indizes vorsch...
متن کاملGenerierung und Anfragebearbeitung von hierarchischen XML-Sichten auf relationale Datenbanken
In diesem Beitrag wird beschrieben, wie aus einem relationalen Datenbankschema äquivalente XML-Dokumentbeschreibungen in XMLSchema generiert werden können, die implizite hierarchische Strukturen aus der Datenbank möglichst explizit darstellen. Dabei wird ausgenutzt, dass Primärund Fremdschlüssel sowie Eindeutigkeitsund Nullwert-Bedingungen in XMLSchema übernommen und dass Datentypen des Datenba...
متن کاملModellierung und Verwaltung hierarchisch strukturierter Informationen in relationalen Datenbanksystemen
In diesem Paper werden Hierarchien in relationale Datenbanksysteme eingeführt. Die Anfragesprache unterliegt minimalen Änderungen. Aus der logischen Sichtweise der Behandlung von Hierarchien wird z.B. die Maintenance verbessert, aus der physischen Sicht kann die Abarbeitung von Anfragen erheblich beschleunigt werden. Zu diesem Zweck müssen Metadaten in Form von Abhängigkeitsbeziehungen zwischen...
متن کامل